Graphical user interfaces, or "GUIs" as they are often designated, have become an increasingly common and popular feature of computers, especially personal computers (PCs). One of the many advantages of such GUIs is that they allow a user to enter commands by selecting and manipulating objects such as icons or buttons, usually with a pointing device, such as a mouse. The objects of a GUI are designed to look and behave in a manner similar to the files or applications they represent. The Apple Macintosh user interface and Microsoft Windows operating environment are two common and very popular examples of GUIs, illustrating the fact that the advantages of GUIs over conventional text-based user interfaces are widely recognized.
GUIs store objects in containers. There are many different types of containers, including "desktops", "files", "groups", and many different application programs. A typical container includes a window so that a user may "see" some or all of the objects stored therein. Conventionally, the GUI arranges the objects inside the container using one of two methods. The first is a free-form method, in which an object may be placed anywhere inside the container. Utilizing this method, the GUI places an object in a random location inside the container, and the user may reposition the object to any other location by moving it using conventional techniques. The second method is a snap-to-grid method in which a discrete number of locations, or cells, in which an object may reside are defined inside the container. Utilizing this method, the GUI arranges the cells in a rectangular grid style and places an object in an unoccupied cell. If the user repositions the object outside of one of the cells, the GUI "snaps" the object into the nearest available cell, thereby maintaining a neat and rectangular grouping of the objects.
Several disadvantages are associated with each of the above described arrangement methods. For example, the free-form method often results in a container that appears disorderly, with objects overlapping and/or unevenly spaced apart. In addition, some objects can seem to disappear. This often happens when objects overlap in such a manner that one object completely covers another object.
The snap-to-grid method solves many of the problems associated with the free-form method. It prevents objects from overlapping and keeps the objects in a rectangular, evenly spaced order. It also allows new objects to be added in a symmetrical format. However, neither the free-form method nor the snap-to-grid method allows objects to be easily arranged in an irregular grid style, such as a rhombus or circle, while keeping the overall symmetrical ordering of all the objects. Furthermore, neither method provides an easy way to rearrange the objects into a different grid style without extensive user interaction.
Therefore, what is needed is a system and method for automatically arranging objects such as icons or buttons of a container in a visually attractive and effective manner.